package com.lt.common;

import android.util.Log;

import com.lt.base.BaseApplication;

/**
 * 调试，日志辅助类
 *
 * @author luotian
 */
public class DebugHelper {

    private final static String TAG = "--LT@TestMode--";

    public static String getFileMethodLine() {
        StackTraceElement traceElement = (new Exception()).getStackTrace()[1];
        return "[" + traceElement.getFileName() + "|" + traceElement.getMethodName() + "|" + traceElement.getLineNumber() + "] ";
    }

    public static String getMethodLine() {
        StackTraceElement traceElement = (new Exception()).getStackTrace()[1];
        return "[" + traceElement.getMethodName() + "|" + traceElement.getLineNumber() + "] ";
    }

    public static String _FILE_() {
        StackTraceElement traceElement = (new Exception()).getStackTrace()[1];
        return traceElement.getFileName();
    }

    public static String _FUNC_() {
        StackTraceElement traceElement = (new Exception()).getStackTrace()[1];
        return traceElement.getMethodName();
    }

    public static int _LINE_() {
        StackTraceElement traceElement = (new Exception()).getStackTrace()[1];
        return traceElement.getLineNumber();
    }

    /**
     * DEBUG日志
     *
     * @param msg 消息
     */
    public static void d(String msg) {
        d(TAG, msg);
    }

    /**
     * DEBUG日志
     *
     * @param tag 标签
     * @param msg 消息
     */
    public static void d(String tag, String msg) {
        d(tag, msg, null);
    }

    /**
     * WARN日志
     *
     * @param tag 标签
     * @param msg 消息
     * @param tr  异常
     */
    public static void d(String tag, String msg, Throwable tr) {
        if (BaseApplication.getInstance().isDebug()) {
            Log.d(tag, msg, tr);
        }
    }

    /**
     * WARN日志
     *
     * @param msg 消息
     */
    public static void w(String msg) {
        w(TAG, msg);
    }

    /**
     * WARN日志
     *
     * @param tag 标签
     * @param msg 消息
     */
    public static void w(String tag, String msg) {
        w(tag, msg, null);
    }

    /**
     * WARN日志
     *
     * @param tag 标签
     * @param msg 消息
     * @param tr  异常
     */
    public static void w(String tag, String msg, Throwable tr) {
        if (BaseApplication.getInstance().isDebug()) {
            Log.w(tag, msg, tr);
        }
    }

    /**
     * Error日志
     *
     * @param msg 消息
     */
    public static void e(String msg) {
        e(TAG, msg);
    }

    /**
     * Error日志
     *
     * @param tag 标签
     * @param msg 消息
     */
    public static void e(String tag, String msg) {
        e(tag, msg, null);
    }

    /**
     * Error日志
     *
     * @param tag 标签
     * @param msg 消息
     * @param tr  异常
     */
    public static void e(String tag, String msg, Throwable tr) {
        if (BaseApplication.getInstance().isDebug()) {
            Log.e(tag, msg, tr);
        }
    }

    /**
     * 定位log的位置
     *
     * @param desc 描述
     */
    public static void LogLine(String desc) {
        e(desc + "\r\n" + getMethodLine());
    }
}
